# -*- coding：utf-8 -*-
"""
@Time:2024-08-1815:00
@Auth:泛彼泊舟
@File:3、装饰器的语法糖.py
@IDE:PyCharm
@模块功能：xxx
"""
"""
装饰器的使用场景：
- 统计一个函数的执行时间
- 输出日志信息
- 缓存的处理
- 实现路由

"""
# 装饰器的使用场景案例
# - 获取一个函数执行的开始到结束的时间
import time

# 编写一个装饰器，统计func执行的时间
def get_time(f):   # f = func
    def inner():
        start_time = time.time()
        f()
        end_time = time.time()
        print("函数执行的时间为{}".format(end_time-start_time))
    return inner

def func():
    list1 = []
    for i in range(10000001):
        list1.append(i)
    else:
        print(list1)


func = get_time(func)
func()

print("----"*100)
print("使用装饰器的语法糖进行装饰")
# 在调用函数上方直接@装饰函数名
# 装饰器的语法糖格式，用来被装饰的函数定义的上面
@get_time       # func = get_time(func)
def func1():
    list1 = []
    for i in range(10000001):
        list1.append(i)
    else:
        print(list1)

# 调用就直接调用了,不用再写func = get_time(func)的步骤了
func1()

"""
语法糖的格式使用@对函数进行装饰
- 在整个运行的模块中，优化会执行装饰器的代码，装饰器不需要手动调用，自动执行
- 被装饰的函数执行的时候其实调用的是装饰器里面的闭包函数
"""